<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>深入理解PHP Opcode缓存原理 | Linux运维笔记</title>
        <script type="text/javascript">
             window.onload = function(){
                 prettyPrint();
             }
        </script>
        <meta name="viewport" content="initial-scale=1.0" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="https://blog.linuxeye.com/xmlrpc.php" />

<!-- All in One SEO Pack 2.2.7.1 by Michael Torbert of Semper Fi Web Design[-1,-1] -->
<link rel="author" href="https://plus.google.com/115273435295834324285/" />
<meta name="description" itemprop="description" content="什么是opcode缓存？ 当解释器完成对脚本代码的分析后，便将它们生成可以直接运行的中间代码，也称为操作码（Operate Code，opcode）。Opcode" />

<meta name="keywords" itemprop="keywords" content="php缓存,opcode" />

<link rel="canonical" href="https://blog.linuxeye.com/361.html" />
<!-- /all in one seo pack -->
<link rel="alternate" type="application/rss+xml" title="Linux运维笔记 &raquo; Feed" href="https://blog.linuxeye.com/feed" />
<link rel="alternate" type="application/rss+xml" title="Linux运维笔记 &raquo; 评论Feed" href="https://blog.linuxeye.com/comments/feed" />
<link rel="alternate" type="application/rss+xml" title="Linux运维笔记 &raquo; 深入理解PHP Opcode缓存原理评论Feed" href="https://blog.linuxeye.com/361.html/feed" />
<link rel='stylesheet' id='prettify-css-css'  href='https://blog.linuxeye.com/wp-content/plugins/kindeditor-for-wordpress/plugins/code/prettify.css?ver=20110329' type='text/css' media='all' />
<link rel='stylesheet' id='asteroid-main-css'  href='https://blog.linuxeye.com/wp-content/themes/asteroid/style.css?ver=1.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='asteroid-responsive-css'  href='https://blog.linuxeye.com/wp-content/themes/asteroid/responsive.css?ver=1.2.0' type='text/css' media='all' />
<script type="text/javascript">
var duoshuoQuery = {"short_name":"linuxeye","sso":{"login":"https:\/\/blog.linuxeye.com\/wp-login.php?action=duoshuo_login","logout":"https:\/\/blog.linuxeye.com\/wp-login.php?action=logout&_wpnonce=01176bbb97"},"theme":"default","stylePatch":"wordpress\/Asteroid"};
duoshuoQuery.sso.login += '&redirect_to=' + encodeURIComponent(window.location.href);
duoshuoQuery.sso.logout += '&redirect_to=' + encodeURIComponent(window.location.href);
</script>
<script type="text/javascript" src="https://static.duoshuo.com/embed.js" charset="UTF-8" async="async"></script>
<script type='text/javascript' src='https://blog.linuxeye.com/wp-content/plugins/kindeditor-for-wordpress/plugins/code/prettify.js?ver=20110329'></script>
<script type='text/javascript' src='https://blog.linuxeye.com/wp-includes/js/jquery/jquery.js?ver=1.11.3'></script>
<script type='text/javascript' src='https://blog.linuxeye.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.linuxeye.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.linuxeye.com/wp-includes/wlwmanifest.xml" /> 
<link rel='prev' title='Varnish &#8211; 高性能http加速器' href='https://blog.linuxeye.com/360.html' />
<link rel='next' title='浅谈Linux内存管理机制' href='https://blog.linuxeye.com/362.html' />
<meta name="generator" content="WordPress 4.3" />
<link rel='shortlink' href='https://blog.linuxeye.com/?p=361' />

<!-- Asteroid Head -->
<meta property="Asteroid Theme" content="1.2.0" />
<meta name="baidu-site-verification" content="0w8YdI5tpm" />
<!-- Asteroid Head End -->

<style type="text/css" media="screen">
	#container {width: 1126px;}
	#header {
		min-height: 120px;
		background-color: #FFFFFF;
	}
	#content {
		width: 800px;
		max-width: 800px;
		background-color: #FFFFFF;
	}
	#sidebar {
		width: 310px;
		max-width: 310px;
		background-color: #FFFFFF;
	}
</style>


<style type="text/css" media="screen">
	#site-title a, #site-description {color:#ffa900;}
</style>

<style type="text/css" id="custom-background-css">
body.custom-background { background-image: url('https://blog.linuxeye.com/wp-content/themes/asteroid/images/bg-grey.png'); background-repeat: repeat; background-position: top left; background-attachment: scroll; }
</style>
</head>

<body class="single single-post postid-361 single-format-standard custom-background">

	
	
<div id="container" class="cf">
	
	<div id="header" class="cf">
				<div id="header-info-wrap" class="cf">
												<div id="header-text" class="cf">
												<h2 id="site-title"><a href="https://blog.linuxeye.com/">Linux运维笔记</a></h2>						<h4 id="site-description"></h4>		
					</div>
									</div>

					<div id="widgets-wrap-header" class="cf"><div id="text-5" class="widget-header asteroid-widget widget_text">			<div class="textwidget"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- 726*90 -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-4157113266001782"
     data-ad-slot="5714101352"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
		</div></div>
					</div>

	
	<nav id="nav" class="cf ">
		
		
		<ul id="menu-head_menu" class="menu"><li id="menu-item-215" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-215"><a href="http://blog.linuxeye.com">Home</a></li>
<li id="menu-item-8" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-8"><a href="https://blog.linuxeye.com/category/linux">Linux</a></li>
<li id="menu-item-7" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-7"><a href="https://blog.linuxeye.com/category/shell">Shell</a></li>
<li id="menu-item-288" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-288"><a href="https://blog.linuxeye.com/category/python">Python</a></li>
<li id="menu-item-9" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9"><a target="_blank" href="http://mirrors.linuxeye.com/">mirrors</a></li>
<li id="menu-item-211" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-211"><a href="https://blog.linuxeye.com/category/other">随笔</a></li>
<li id="menu-item-213" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-213"><a href="https://blog.linuxeye.com/donation">捐赠</a></li>
<li id="menu-item-11" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11"><a href="https://blog.linuxeye.com/about">关于</a></li>
<li class="menu-item menu-item-search"><form id="nav-search-form" role="search" method="get" action="https://blog.linuxeye.com/"><label><span class="screen-reader-text">Search for:</span><input type="search" value="Search" onfocus="if (this.value == 'Search') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search';}" name="s" /></label><input type="submit" value="" /></form></li></ul>
			</nav>

	
<div id="main" class="cf">

<div id="content" class="cf">
	
	<!-- Widgets: Before Content -->
	
	
	<!-- Start the Loop -->
	
								<article id="post-361" class="single-view post-361 post type-post status-publish format-standard hentry category-linux tag-opcode tag-php">

<div class="entry-header">
	<h1 class="entry-title"><a href="https://blog.linuxeye.com/361.html">深入理解PHP Opcode缓存原理</a></h1>
</div>

<!-- Widgets: Before Post -->

<!-- Date & Author -->
<div class="entry-meta-top cf">
				<div class="entry-date">2013-09-23</div>
	
			<div class="entry-author author vcard">
						Posted by&nbsp;<a class="url fn" href="https://blog.linuxeye.com">yeho</a>
		</div>
	</div>

<div class="entry-content cf">

	<!-- Widgets: Before Post Content -->
	
	<p><span style="color:#006600;"><strong>什么是opcode缓存？</strong></span><br />
当解释器完成对脚本代码的分析后，便将它们生成可以直接运行的中间代码，也称为操作码（Operate Code，opcode）。Opcode cache的目地是避免重复编译，减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存，而在于I/O操作，比如数据库查询带来的磁盘I/O开销，那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低，这总归是好事。</p>
<p>现代操作码缓存器（Optimizer+，APC2.0+，其他）使用共享内存进行存储，并且可以直接从中执行文件，而不用在执行前“反序列化”代码。这将带来显着的性能加速，通常降低了整体服务器的内存消耗，而且很少有缺点。</p>
<p><span style="color:#006600;"><strong> 为什么要使用Opcode缓存？</strong></span><br />
这得从PHP代码的生命周期说起，请求PHP脚本时，会经过五个步骤，如下图所示：</p>
<div align="center">
	<a href="http://blog.linuxeye.com/wp-content/uploads/2013/09/php-life-cycle-without-opcode-cache.png" target="_blank"><img src="/wp-content/uploads/2013/09/php-life-cycle-without-opcode-cache.png" alt="" height="86" width="640" /></a>
</div>
<p>Zend引擎必须从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码（称为Opcode），最后执行Opcode。每一次请求PHP脚本都会执行一遍以上步骤，如果PHP源代码没有变化，那么Opcode也不会变化，显然没有必要每次都重行生成Opcode，结合在Web中无所不在的缓存机制，我们可以把Opcode缓存下来，以后直接访问缓存的Opcode岂不是更快，启用Opcode缓存之后的流程图如下所示：</p>
<div align="center">
	<a href="http://blog.linuxeye.com/wp-content/uploads/2013/09/php-life-cycle.png" target="_blank"><img src="/wp-content/uploads/2013/09/php-life-cycle.png" alt="" height="234" width="640" /></a>
</div>
<p>
<strong><span style="color:#006600;"> 有那些PHP opcode缓存插件？</span></strong> <br />
<span style="color:#E53333;">Optimizer+</span>（Optimizer+于2013年3月中旬改名为Opcache，PHP 5.5集成Opcache，其他的会不会消失？）、<span style="color:#E53333;">eAccelerator</span>、<span style="color:#E53333;">xcache</span>、<span style="color:#E53333;">APC</span> &#8230;</p>
<p><strong><span style="color:#006600;"> PHP opcode原理：</span></strong><br />
Opcode是一种PHP脚本编译后的中间语言，就像Java的ByteCode,或者.NET的MSL，举个例子，比如你写下了如下的PHP代码：</p>
<pre class="prettyprint lang-php">&lt;?php
   echo "Hello World";
   $a = 1 + 1;
   echo $a;
?&gt;</pre>
<p>PHP执行这段代码会经过如下4个步骤(确切的来说，应该是PHP的语言引擎Zend)</p>
<pre class="prettyprint lang-bsh">1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
2.Parsing, 将Tokens转换成简单而有意义的表达式
3.Compilation, 将表达式编译成Opocdes
4.Execution, 顺次执行Opcodes，每次一条，从而实现PHP脚本的功能。</pre>
<p>题外话：现在有的Cache比如APC,可以使得PHP缓存住Opcodes，这样，每次有请求来临的时候，就不需要重复执行前面3步，从而能大幅的提高PHP的执行速度。</p>
<p>那什么是Lexing? 学过编译原理的同学都应该对编译原理中的词法分析步骤有所了解，Lex就是一个词法分析的依据表。 Zend/zend_language_scanner.c会根据Zend/zend_language_scanner.l(Lex文件),来输入的 PHP代码进行词法分析，从而得到一个一个的“词”，PHP4.2开始提供了一个函数叫token_get_all,这个函数就可以讲一段PHP代码 Scanning成Tokens；</p>
<p>如果用这个函数处理我们开头提到的PHP代码，将会得到如下结果:</p>
<pre class="prettyprint lang-php">Array
(
    [0] =&gt; Array
        (
           [0] =&gt; 367
           [1] =&gt; Array
        (
            [0] =&gt; 316
            [1] =&gt; echo
        )
    [2] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [3] =&gt; Array
        (
            [0] =&gt; 315
            [1] =&gt; "Hello World"
        )
    [4] =&gt; ;
    [5] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [6] =&gt; =
    [7] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [8] =&gt; Array
        (
            [0] =&gt; 305
            [1] =&gt; 1
        )
    [9] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [10] =&gt; +
    [11] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [12] =&gt; Array
        (
            [0] =&gt; 305
            [1] =&gt; 1
        )
    [13] =&gt; ;
    [14] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [15] =&gt; Array
        (
            [0] =&gt; 316
            [1] =&gt; echo
        )
    [16] =&gt; Array
        (
            [0] =&gt; 370
            [1] =&gt;
        )
    [17] =&gt; ;
)</pre>
<p>分析这个返回结果我们可以发现，源码中的字符串，字符，空格，都会原样返回。每个源代码中的字符，都会出现在相应的顺序处。而，其他的比如标签，操作符，语句，都会被转换成一个包含俩部分的Array: Token ID (也就是在Zend内部的改Token的对应码，比如,T_ECHO,T_STRING)，和源码中的原来的内容。<br />
接下来，就是Parsing阶段了，Parsing首先会丢弃Tokens Array中的多于的空格，然后将剩余的Tokens转换成一个一个的简单的表达式</p>
<pre class="prettyprint lang-bsh">1.echo a constant string
2.add two numbers together
3.store the result of the prior expression to a variable
4.echo a variable</pre>
<p>然后就改Compilation阶段了，它会把Tokens编译成一个个op_array, 每个op_arrayd包含如下5个部分：</p>
<pre class="prettyprint lang-bsh">1.Opcode数字的标识，指明了每个op_array的操作类型，比如add , echo
2.结果 存放Opcode结果
3.操作数1 给Opcode的操作数
4.操作数2
5.扩展值1个整形用来区别被重载的操作符</pre>
<p>比如，我们的PHP代码会被Parsing成:</p>
<pre class="prettyprint lang-bsh">* ZEND_ECHO 'Hello World'
* ZEND_ADD ~0 1 1
* ZEND_ASSIGN !0 ~0
* ZEND_ECHO !0</pre>
<p>你可能会问了，我们的$a去那里了？</p>
<p>这个要介绍操作数了，每个操作数都是由以下俩个部分组成：</p>
<pre class="prettyprint lang-bsh">a)op_type : 为IS_CONST, IS_TMP_VAR, IS_VAR, IS_UNUSED, or IS_CV 
b)u,一个联合体，根据op_type的不同，分别用不同的类型保存了这个操作数的值(const)或者左值(var)</pre>
<p>而对于var来说，每个var也不一样</p>
<p>IS_TMP_VAR, 顾名思义，这个是一个临时变量，保存一些op_array的结果，以便接下来的op_array使用，这种的操作数的u保存着一个指向变量表的一个句柄（整数），这种操作数一般用~开头，比如~0,表示变量表的0号未知的临时变量</p>
<p>IS_VAR 这种就是我们一般意义上的变量了,他们以$开头表示</p>
<p>IS_CV 表示ZE2.1/PHP5.1以后的编译器使用的一种cache机制，这种变量保存着被它引用的变量的地址，当一个变量第一次被引用的时候，就会被CV起来，以后对这个变量的引用就不需要再次去查找active符号表了，CV变量以！开头表示。</p>
<p>这么看来，我们的$a被优化成!0了。<br />
参考：http://www.laruence.com/2008/06/18/221.html</p>
<div align="right">
	<strong> Mon Sep 23 11:10:15 CST 2013</strong>
</div>
	<h3><p><span style="color:#006600;"><strong>关于版权</strong></span></p></h3>
	<div style="background: none repeat scroll 0 0 #F5FCEE;border-left: 8px solid #CCFFCC;line-height: 22px;text-align: left;font-size: 14px;">
	<p>《<a target="_blank" href="blog.linuxeye.com">Linux运维笔记</a>》的博文均基于创作共享的<a href="http://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh_TW" target="_blank">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>发布。转载本站博文时请务必以超链接形式标明源文出处，否则谢绝一切转载！</p>
        <p>转载请保留固定链接： <a href="https://blog.linuxeye.com/361.html">https://blog.linuxeye.com/361.html</a></p>
        </div>

	<!-- Widgets: After Post Content -->
	
	
</div>

<div class="entry-meta-bottom cf">

			<div class="updated">Updated:&nbsp;2013-09-23&nbsp;at&nbsp;10:59</div>
	
	<div class="entry-tags">标签：<a href="https://blog.linuxeye.com/tag/opcode" rel="tag">Opcode</a>, <a href="https://blog.linuxeye.com/tag/php%e7%bc%93%e5%ad%98" rel="tag">php缓存</a></div>

	
	<!-- Widgets: After Post -->
	
			<div class="post-nav cf">
			<div class="link-prev">&#x25C0; <a href="https://blog.linuxeye.com/360.html" rel="prev">Varnish &#8211; 高性能http加速器</a></div>
			<div class="link-next"><a href="https://blog.linuxeye.com/362.html" rel="next">浅谈Linux内存管理机制</a> &#x25B6;</div>
		</div>
	</div>


	<div id="comment-area" class="cf"><a name="comments"></a>

<div class="ds-thread" data-thread-key="361" data-author-key="1" data-title="深入理解PHP Opcode缓存原理" data-url="https://blog.linuxeye.com/361.html"></div>

<script type="text/javascript">
	if (typeof DUOSHUO !== 'undefined')
		DUOSHUO.EmbedThread('.ds-thread');
</script>
	<div id="ds-ssr">

		
            <ol id="commentlist">
                		<li class="comment even thread-even depth-1" id="li-comment-6089">
			<article id="comment-6089" class="comment">
				<footer class="comment-meta">
					<cite class="comment-author vcard">
						<span class="fn"><a href='http://weibo.com/chenminbo' rel='external nofollow' class='url'>Raymondc_CMB</a></span> on <a rel="nofollow" href="https://blog.linuxeye.com/361.html#comment-6089"><time pubdate datetime="2015-08-14T09:56:33+00:00">2015-08-14 at 09:56</time></a> <span class="says">said:</span>					</cite><!-- .comment-author .vcard -->
				</footer>
	
				<div class="comment-content"><p>PHP opcode确实起到很好效果</p>
</div>
				
			</article><!-- #comment-## -->
		</li><!-- #comment-## -->
		<li class="comment odd alt thread-odd thread-alt depth-1" id="li-comment-5751">
			<article id="comment-5751" class="comment">
				<footer class="comment-meta">
					<cite class="comment-author vcard">
						<span class="fn"><a href='http://weibo.com/2279187984' rel='external nofollow' class='url'>康净毅</a></span> on <a rel="nofollow" href="https://blog.linuxeye.com/361.html#comment-5751"><time pubdate datetime="2015-07-02T10:21:58+00:00">2015-07-02 at 10:21</time></a> <span class="says">said:</span>					</cite><!-- .comment-author .vcard -->
				</footer>
	
				<div class="comment-content"><p>真好，谢谢。</p>
</div>
				
			</article><!-- #comment-## -->
		</li><!-- #comment-## -->
            </ol>

		            
    </div></div>

</article>
			
	
	
	<!-- Bottom Post Navigation -->
	</div>

<div id="sidebar" class="cf">
		<div id="widgets-wrap-sidebar">

					<div id="text-3" class="widget-sidebar asteroid-widget widget_text"><h4 class="widget-title">Donate/捐赠</h4>			<div class="textwidget"><a href="http://market.aliyun.com/products/53690006/cmgj000342.html" target="_blank"><img src="http://static.oneinstack.com/images/oneinstack-aliyun.png" width="250" height="250"></a>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- 250*250 -->
<ins class="adsbygoogle"
     style="display:inline-block;width:250px;height:250px"
     data-ad-client="ca-pub-4157113266001782"
     data-ad-slot="7690362157"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=lj2007331@gmail.com&currency_code=USD&amount=0.99&return=http://blog.linuxeye.com/donate&item_name=LinuxEye%20Blog&undefined_quantity=1&no_note=0" target="_blank"><img src="/wp-content/uploads/2013/10/paypal.gif"  alt="美元 - paypal" title="美元" style="border:none;vertical-align:middle;" /></a>
<img src="/wp-content/uploads/2013/10/alipay.png"  style="border:none;vertical-align:middle;" /></div>
		</div><div id="text-2" class="widget-sidebar asteroid-widget widget_text"><h4 class="widget-title">订阅文章</h4>			<div class="textwidget"><!--以下是QQ邮件列表订阅嵌入代码--><a target="_blank" href="http://list.qq.com/cgi-bin/qf_invite?id=996fafe3df8ab46d57ad9a51f6812ca05952aecc7119dd84"><img border="0" alt="填写您的邮件地址，订阅我们的精彩内容：" src="https://list.qq.com/zh_CN/htmledition/images/qunfa/manage/picMode_light_l.png" /></a>
<!--以下是QQ邮件列表订阅嵌入代码--><script >var nId = "1d9ef83cf597efc2352f2752fb6e2bb585065c98a002a32a",nWidth="auto",sColor="light",sText="填写您的邮件地址，订阅Linux运维笔记" ;</script><script src="/wp-content/uploads/2014/12/qfcode.js" charset="gb18030"></script></div>
		</div>		<div id="recent-posts-2" class="widget-sidebar asteroid-widget widget_recent_entries">		<h4 class="widget-title">近期文章</h4>		<ul>
					<li>
				<a href="https://blog.linuxeye.com/429.html">server.xml引入子文件配置（tomcat虚拟主机）</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/428.html">Tomcat日志切割（logrotate）</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/427.html">-sh: fork failed &#8211; too many processes</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/426.html">ShadowSocks多用户管理系统搭建（moeSS+manyuser）</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/425.html">Tomcat启动脚本</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/424.html">MySQL/MariaDB/Percona数据库升级脚本</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/423.html">Shadowsocks一键安装脚本（CentOS6,7、Ubuntu、Debian）</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/422.html">Linode 12周年，从Xen迁移到KVM</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/421.html">推荐一个DNS解析商：CloudXNS</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/420.html">ssh登录很慢解决方法</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/419.html">MySQL数据库管理常用命令</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/418.html">PHP曝DOS漏洞可致CPU灌满,PHP5.3/5.2修补方法</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/417.html">Pure-FTPd虚拟用户管理脚本（PureDB）</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/416.html">Linux下内置命令和外部命令详解</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/415.html">CentOS 6、7下配置exim发邮件服务器</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/414.html">如何找出发生SEGV内存错误的程序</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/413.html">tomcat配置及优化</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/412.html">CentOS 6、7下pptp vpn一键安装脚本</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/411.html">CentOS 6.6源码安装GitLab7</a>
						</li>
					<li>
				<a href="https://blog.linuxeye.com/410.html">Python多线程抓取代理服务器</a>
						</li>
				</ul>
		</div><div id="tag_cloud-2" class="widget-sidebar asteroid-widget widget_tag_cloud"><h4 class="widget-title">标签</h4><div class="tagcloud"><a href='https://blog.linuxeye.com/tag/apache' class='tag-link-22' title='9个话题' style='font-size: 15.505154639175pt;'>Apache</a>
<a href='https://blog.linuxeye.com/tag/awk' class='tag-link-62' title='9个话题' style='font-size: 15.505154639175pt;'>awk</a>
<a href='https://blog.linuxeye.com/tag/bash' class='tag-link-52' title='11个话题' style='font-size: 16.659793814433pt;'>bash</a>
<a href='https://blog.linuxeye.com/tag/cacti' class='tag-link-28' title='2个话题' style='font-size: 8pt;'>Cacti</a>
<a href='https://blog.linuxeye.com/tag/centos' class='tag-link-124' title='3个话题' style='font-size: 9.7319587628866pt;'>CentOS</a>
<a href='https://blog.linuxeye.com/tag/expect' class='tag-link-96' title='4个话题' style='font-size: 11.175257731959pt;'>expect</a>
<a href='https://blog.linuxeye.com/tag/hhvm' class='tag-link-261' title='3个话题' style='font-size: 9.7319587628866pt;'>hhvm</a>
<a href='https://blog.linuxeye.com/tag/java' class='tag-link-46' title='2个话题' style='font-size: 8pt;'>java</a>
<a href='https://blog.linuxeye.com/tag/lamp' class='tag-link-27' title='3个话题' style='font-size: 9.7319587628866pt;'>LAMP</a>
<a href='https://blog.linuxeye.com/tag/linode' class='tag-link-93' title='8个话题' style='font-size: 14.783505154639pt;'>Linode</a>
<a href='https://blog.linuxeye.com/tag/linode-vps' class='tag-link-82' title='5个话题' style='font-size: 12.329896907216pt;'>Linode VPS</a>
<a href='https://blog.linuxeye.com/tag/linux' class='tag-link-1' title='15个话题' style='font-size: 18.39175257732pt;'>Linux</a>
<a href='https://blog.linuxeye.com/tag/linux-shell%e8%84%9a%e6%9c%ac%e6%94%bb%e7%95%a5' class='tag-link-104' title='9个话题' style='font-size: 15.505154639175pt;'>Linux Shell脚本攻略</a>
<a href='https://blog.linuxeye.com/tag/lnmp' class='tag-link-13' title='2个话题' style='font-size: 8pt;'>LNMP</a>
<a href='https://blog.linuxeye.com/tag/mariadb' class='tag-link-200' title='3个话题' style='font-size: 9.7319587628866pt;'>MariaDB</a>
<a href='https://blog.linuxeye.com/tag/mysql' class='tag-link-15' title='16个话题' style='font-size: 18.824742268041pt;'>MySQL</a>
<a href='https://blog.linuxeye.com/tag/nagios' class='tag-link-25' title='3个话题' style='font-size: 9.7319587628866pt;'>Nagios</a>
<a href='https://blog.linuxeye.com/tag/nginx' class='tag-link-17' title='19个话题' style='font-size: 19.835051546392pt;'>Nginx</a>
<a href='https://blog.linuxeye.com/tag/percona' class='tag-link-210' title='3个话题' style='font-size: 9.7319587628866pt;'>Percona</a>
<a href='https://blog.linuxeye.com/tag/php' class='tag-link-18' title='7个话题' style='font-size: 14.061855670103pt;'>php</a>
<a href='https://blog.linuxeye.com/tag/php-fpm' class='tag-link-151' title='3个话题' style='font-size: 9.7319587628866pt;'>php-fpm</a>
<a href='https://blog.linuxeye.com/tag/pureftpd' class='tag-link-122' title='2个话题' style='font-size: 8pt;'>Pureftpd</a>
<a href='https://blog.linuxeye.com/tag/python' class='tag-link-110' title='27个话题' style='font-size: 22pt;'>Python</a>
<a href='https://blog.linuxeye.com/tag/python%e6%a0%b8%e5%bf%83%e7%bc%96%e7%a8%8b' class='tag-link-120' title='4个话题' style='font-size: 11.175257731959pt;'>Python核心编程</a>
<a href='https://blog.linuxeye.com/tag/redis' class='tag-link-126' title='4个话题' style='font-size: 11.175257731959pt;'>Redis</a>
<a href='https://blog.linuxeye.com/tag/replace' class='tag-link-71' title='2个话题' style='font-size: 8pt;'>replace</a>
<a href='https://blog.linuxeye.com/tag/rrdtool' class='tag-link-31' title='2个话题' style='font-size: 8pt;'>rrdtool</a>
<a href='https://blog.linuxeye.com/tag/rsync' class='tag-link-89' title='2个话题' style='font-size: 8pt;'>Rsync</a>
<a href='https://blog.linuxeye.com/tag/sed' class='tag-link-60' title='9个话题' style='font-size: 15.505154639175pt;'>sed</a>
<a href='https://blog.linuxeye.com/tag/shell' class='tag-link-4' title='11个话题' style='font-size: 16.659793814433pt;'>Shell</a>
<a href='https://blog.linuxeye.com/tag/snmp' class='tag-link-32' title='2个话题' style='font-size: 8pt;'>SNMP</a>
<a href='https://blog.linuxeye.com/tag/subversion' class='tag-link-37' title='3个话题' style='font-size: 9.7319587628866pt;'>subversion</a>
<a href='https://blog.linuxeye.com/tag/svn' class='tag-link-38' title='2个话题' style='font-size: 8pt;'>svn</a>
<a href='https://blog.linuxeye.com/tag/tomcat' class='tag-link-59' title='7个话题' style='font-size: 14.061855670103pt;'>tomcat</a>
<a href='https://blog.linuxeye.com/tag/vpn' class='tag-link-94' title='3个话题' style='font-size: 9.7319587628866pt;'>vpn</a>
<a href='https://blog.linuxeye.com/tag/xen' class='tag-link-107' title='2个话题' style='font-size: 8pt;'>Xen</a>
<a href='https://blog.linuxeye.com/tag/%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95' class='tag-link-81' title='3个话题' style='font-size: 9.7319587628866pt;'>压力测试</a>
<a href='https://blog.linuxeye.com/tag/%e5%90%af%e5%8a%a8%e8%84%9a%e6%9c%ac' class='tag-link-150' title='3个话题' style='font-size: 9.7319587628866pt;'>启动脚本</a>
<a href='https://blog.linuxeye.com/tag/%e5%ae%89%e5%85%a8' class='tag-link-12' title='2个话题' style='font-size: 8pt;'>安全</a>
<a href='https://blog.linuxeye.com/tag/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f' class='tag-link-61' title='2个话题' style='font-size: 8pt;'>正则表达式</a>
<a href='https://blog.linuxeye.com/tag/%e6%b5%81%e9%87%8f%e7%9b%91%e6%8e%a7' class='tag-link-33' title='2个话题' style='font-size: 8pt;'>流量监控</a>
<a href='https://blog.linuxeye.com/tag/%e7%9b%91%e6%8e%a7' class='tag-link-26' title='3个话题' style='font-size: 9.7319587628866pt;'>监控</a>
<a href='https://blog.linuxeye.com/tag/%e7%bc%93%e5%ad%98' class='tag-link-190' title='3个话题' style='font-size: 9.7319587628866pt;'>缓存</a>
<a href='https://blog.linuxeye.com/tag/%e8%84%9a%e6%9c%ac' class='tag-link-20' title='8个话题' style='font-size: 14.783505154639pt;'>脚本</a>
<a href='https://blog.linuxeye.com/tag/%e8%84%9a%e6%9c%ac%e6%94%bb%e7%95%a5' class='tag-link-98' title='9个话题' style='font-size: 15.505154639175pt;'>脚本攻略</a></div>
</div><div id="ds-recent-comments-4" class="widget-sidebar asteroid-widget ds-widget-recent-comments"><h4 class="widget-title">最新评论</h4><ul class="ds-recent-comments" data-num-items="5" data-show-avatars="1" data-show-time="1" data-show-title="1" data-show-admin="1" data-avatar-size="30" data-excerpt-length="70"></ul></div><script>
if (typeof DUOSHUO !== 'undefined')
	DUOSHUO.RecentComments && DUOSHUO.RecentComments('.ds-recent-comments');
</script><div id="archives-2" class="widget-sidebar asteroid-widget widget_archive"><h4 class="widget-title">文章归档</h4>		<ul>
	<li><a href='https://blog.linuxeye.com/date/2015/09'>2015年九月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/08'>2015年八月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/07'>2015年七月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/06'>2015年六月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/05'>2015年五月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/04'>2015年四月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/03'>2015年三月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/02'>2015年二月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2015/01'>2015年一月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/12'>2014年十二月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/11'>2014年十一月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/09'>2014年九月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/07'>2014年七月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/06'>2014年六月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/05'>2014年五月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/04'>2014年四月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/03'>2014年三月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/02'>2014年二月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2014/01'>2014年一月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/12'>2013年十二月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/11'>2013年十一月</a>&nbsp;(5)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/10'>2013年十月</a>&nbsp;(14)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/09'>2013年九月</a>&nbsp;(8)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/08'>2013年八月</a>&nbsp;(8)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/07'>2013年七月</a>&nbsp;(10)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/06'>2013年六月</a>&nbsp;(7)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/05'>2013年五月</a>&nbsp;(12)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/04'>2013年四月</a>&nbsp;(13)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/03'>2013年三月</a>&nbsp;(10)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/02'>2013年二月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2013/01'>2013年一月</a>&nbsp;(12)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/12'>2012年十二月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/11'>2012年十一月</a>&nbsp;(4)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/10'>2012年十月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/09'>2012年九月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/08'>2012年八月</a>&nbsp;(1)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/07'>2012年七月</a>&nbsp;(2)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/06'>2012年六月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/05'>2012年五月</a>&nbsp;(3)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/04'>2012年四月</a>&nbsp;(5)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/03'>2012年三月</a>&nbsp;(10)</li>
	<li><a href='https://blog.linuxeye.com/date/2012/02'>2012年二月</a>&nbsp;(7)</li>
		</ul>
</div>		
	</div>
	</div></div> <!-- #Main End -->

<div id="footer" class="cf">
		
	<div id="footer-area" class="cf">
				
			</div>

	<div id="footer-bottom" class="cf">
		<div id="footer-links">
			<script src="https://s95.cnzz.com/stat.php?id=5334258&web_id=5334258" language="JavaScript"></script>		</div>

								<span id="theme-link"><a href="http://ronangelo.com/asteroid/">Asteroid Theme</a></span>
			</div>

	</div> <!-- #Footer -->

</div> <!-- #Container -->

<script type="text/javascript">
jQuery(document).ready(function($) {
	$('#nav .drop-toggle').click(function(){
		$('#nav').toggleClass('dropped');
	});
});
</script>
<script type='text/javascript' src='https://blog.linuxeye.com/wp-includes/js/comment-reply.min.js?ver=4.3'></script>
</body>
</html>